# 设定 CMake 最低版本要求
cmake_minimum_required(VERSION 3.10)

# 项目名称
project(ServerClientDemo)

# 设置 C 语言标准，可根据实际需求调整（如 C11、C99 等）
set(CMAKE_C_STANDARD 11)
# 开启 C 语言标准强制检查，确保代码符合设定标准
set(CMAKE_C_STANDARD_REQUIRED ON)
# 可根据需要添加编译选项，比如开启更多警告、优化等，这里开启常见警告
add_compile_options(-Wall -Wextra)

# 编译服务器端可执行程序
# 收集服务器端需要编译的源文件
set(SERVER_SOURCES
    server/hashmap.c
    server/main.c
    server/server.c
)
# 收集服务器端的头文件所在目录，方便编译器查找头文件
set(SERVER_INCLUDES
    server
)

# 创建服务器端可执行目标
add_executable(server_exe ${SERVER_SOURCES})
# 为服务器端目标添加头文件搜索路径
target_include_directories(server_exe PRIVATE ${SERVER_INCLUDES})

# （可选）如果客户端也需要单独编译可执行文件，可添加以下内容
# 编译客户端可执行程序
# set(CLIENT_SOURCES
#     client/client.c
# )
# add_executable(client_exe ${CLIENT_SOURCES})

# （可选）如果需要链接额外的库（比如 pthread 等，根据实际代码需求），可添加
# 例如服务器端代码用到了 pthread 库（如果有的话）
# find_package(Threads REQUIRED)
# target_link_libraries(server_exe PRIVATE Threads::Threads)

# 方便调试：添加调试相关编译选项，生成带调试信息的可执行文件
set(CMAKE_BUILD_TYPE Debug)
# 在 Debug 模式下，确保 -g 选项开启（一般默认开启，但显式设置更稳妥）
add_compile_options(-g)